home *** CD-ROM | disk | FTP | other *** search
/ NOVA - For the NeXT Workstation / NOVA - For the NeXT Workstation.iso / Apps / AudioApps / GISO / GISOPrefPanel.m < prev    next >
Text File  |  1992-12-20  |  3KB  |  115 lines

  1. /*    
  2. **    Copyright (C) 1992  Ronin Consulting, Inc.
  3. **
  4. **    This program is free software; you can redistribute it and/or modify
  5. **    it under the terms of the GNU General Public License as published by
  6. **    the Free Software Foundation; version 1.
  7. **
  8. **    This program is distributed in the hope that it will be useful,
  9. **    but WITHOUT ANY WARRANTY; without even the implied warranty of
  10. **    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  11. **    GNU General Public License for more details.
  12. **
  13. **    You should have received a copy of the GNU General Public License
  14. **    along with this program; if not, write to the Free Software
  15. **    Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
  16. */
  17. #import "GISOPrefPanel.h"
  18. #import "Defaults.h"
  19. #import "StringStorage.h"
  20. #import <appkit/Button.h>
  21. #import <appkit/publicWraps.h>
  22. #import <libc.h>
  23. #import <string.h>
  24. #include <sys/types.h>
  25. #include <sys/stat.h>
  26.  
  27.  
  28. static NXDefaultsVector appDefs =  
  29. {
  30. { "StoreDirectory", "./English.lproj" },
  31. { "TmpDirectory", "/tmp"},
  32. {NULL}
  33. };
  34.  
  35. @implementation GISOPrefPanel
  36.  
  37. - init
  38. {
  39.    [super init];
  40.  
  41.    [defaults regDefaults: appDefs];
  42.    return self;
  43. }
  44.  
  45. - save: sender
  46. {
  47.    struct stat buf;
  48.    char *ndir;
  49.    id buffer = [[StringStorage alloc] init];
  50.  
  51.    if([[sender window] makeFirstResponder: [sender window]])
  52.        [[sender window] endEditingFor: nil];
  53.    else
  54.    {
  55.       NXBeep();
  56.       return self;
  57.    }
  58.    
  59.    ndir = (char *)[storeDirectory stringValue];
  60.    
  61.    if(ndir && *ndir)
  62.    {
  63.    
  64.       if(stat(ndir, &buf) || !(buf.st_mode & S_IFDIR))
  65.       {
  66.      NXBeep();
  67.      return self;
  68.       }
  69.  
  70.       [defaults writeDB: "StoreDirectory" as: ndir];
  71.    
  72.    
  73.       [buffer setStringValue: "cp English.lproj/inHotList.strings "];
  74.       [buffer appendStringValue: ndir];
  75.       [buffer appendStringValue: "/inHotList.strings"];
  76.       system([buffer stringValue]);
  77.       [buffer setStringValue: "cp English.lproj/inHotListConfig.strings "];
  78.       [buffer appendStringValue: ndir];
  79.       [buffer appendStringValue: "/inHotListConfig.strings"];
  80.       system([buffer stringValue]);
  81.       [buffer setStringValue: "cp English.lproj/outHotList.strings "];
  82.       [buffer appendStringValue: ndir];
  83.       [buffer appendStringValue: "/outHotList.strings"];
  84.       system([buffer stringValue]);
  85.       [buffer setStringValue: "cp English.lproj/outHotListConfig.strings "];
  86.       [buffer appendStringValue: ndir];
  87.       [buffer appendStringValue: "/outHotListConfig.strings"];
  88.       system([buffer stringValue]);
  89.    }
  90.    
  91.  
  92.    ndir = (char *)[tmpDirectory stringValue];
  93.    
  94.    if(ndir && *ndir)
  95.    {
  96.       if(stat(ndir, &buf) || !(buf.st_mode & S_IFDIR))
  97.       {
  98.      NXBeep();
  99.      return self;
  100.       }
  101.  
  102.       [defaults writeDB: "TmpDirectory" as: ndir];
  103.    }
  104.    
  105.    return [[sender window] performClose: sender];
  106. }
  107.  
  108. - windowDidBecomeKey:sender
  109. {
  110.    [storeDirectory setStringValue: [defaults get: "StoreDirectory"]];
  111.    [tmpDirectory setStringValue: [defaults get: "TmpDirectory"]];
  112.    return self;
  113. }
  114. @end
  115.